NumPy는 과학 컴퓨팅을 위한 핵심 라이브러리로, 다차원 배열 연산 및 선형대수, 난수 생성 등의 기능을 제공한다.
리스트(list)는 다양한 자료형을 자유롭게 담을 수 있는 범용 컨테이너이고,
배열(array)은 동일한 자료형만 저장하며 대량의 수치 데이터를 빠르고 효율적으로 처리할 수 있는 구조이다.
📝 리스트 (List)
예: [1, "Python", True, 3.14]
⚡ 배열 (Array)
예: array('i', [1, 2, 3, 4])
표준 라이브러리 array 모듈 → 단순 배열
numpy 배열 → 고성능 수치 연산 지원
# 코드
import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr)
# 결과
[1 2 3 4]
range 와 np.arange 의 주요 차이점
| 특징 | range | np.arange |
|---|---|---|
| 지원 데이터 타입 | 정수만 지원 | 정수 및 실수 모두 지원 |
| 반환 자료형 | range 이터레이터(iterator) 객체 | numpy 배열(ndarray) |
| 사용 예시 | list(range(1, 10)) | np.arange(1, 10) |
| 주요 장점 | 메모리 효율성이 좋음 (이터레이터 반환) | 실수 단위 생성이 가능하고, numpy 연산이 가능함 |
import numpy as np
X = np.array([0.1, 0.2, 0.3])
print(X.shape) # (3,)
print(X.dtype) # float64
print(X.ndim) # 1차원
Y = np.zeros([3,3]) # 모든 요소를 0으로 초기화
Y = np.ones([3,3]) # 모든 요소를 1로 초기화
A = np.array([])
for i in range(3):
A = np.append(A, [1,2])
print(A) # [1. 2. 1. 2. 1. 2.]
np.arange(1, 1.5, 0.1) # [1. 1.1 1.2 1.3 1.4]
np.linspace(0., 20., 5) # [ 0. 5. 10. 15. 20.]
[Note]
▪ arange() = "array" + "range"
▪ linspace() = "linear" + "space"
X = np.arange(9)
Y = X.reshape([3,3])
print(Y) # [[0 1 2]
# [3 4 5]
# [6 7 8]]
A = np.array([1.2, -1.3, 2.2, 5.3, 3.7])
print(A[0]) # 1.2
print(A[0:3]) # [1.2, -1.3, 2.2]
X = np.array([1.2, -1.3, 2.2, 5.3, 3.7])
print(X[X > 2]) # [2.2, 5.3, 3.7]
[Note]
▪ "불린 배열"은 Boolean Array를 말하는 것으로,
True 또는 False 값을 가지는 배열이다.
이 배열은 조건을 만족하는 요소만 "필터링(선택)"할 때 사용된다.
A = np.array([[1, 2], [3, 4]])
# [[1 2]
# [3 4]]
B = np.array([[5, 6]])
# [[5 6]]
C = np.concatenate((A, B), axis=0) # 행을 추가
# [[1 2]
# [3 4]
# [5 6]]
D = np.concatenate((A, B.T), axis=1) # 열을 추가
[[1 2 5]
[3 4 6]]
[Note]
▪ concatenate() = "con(com, 함께)" + "catenate(chain, 체인으로 묶다)"
= 함께 체인으로 연결하다.
= 연속적으로 이어붙인다.